(function(app, jQ) {
    
    app.report = new function() {
      
        this.init = function() {

            _initEditable();

            jQ('.removeReport').click(function() {

                if(!confirm("Bạn có chắc chắn muốn xóa bản ghi này?")) {
                    return false;
                }
            });

            var addNew = jQ('.addNew');
            var addNewReport = jQ('.addNewReport');
            var submitForm = jQ('.submitForm');
            addNew.click(function() {

                addNewReport.slideToggle();
            });

            addNewReport.validate({
                invalidHandler: function(form, validator) {
                    var errors = validator.numberOfInvalids();
                    if (errors) {
                        validator.errorList[0].element.focus();
                    }
                },
                ignore: ":hidden, .notValidate",
                errorElement: "li",
                wrapper: "ul",
                errorPlacement: function(error, element) {
                    error.addClass('error');
                    error.insertAfter(element);
                }
                ,
                rules: {
                    acc: {
                        required: true
                    },
                    name: {
                        required: true
                    }
                },
                messages: {
                    acc: "Bạn cần nhập tên tài khoản",
                    name: "Bạn cần nhập họ tên người dùng"
                }
            });
        }

        var _stopPropagation = function() {
            return false;
        };

        var _initEditable = function() {

            jQ('.editTrigger').click(function() {

                $this = jQ(this);
                var parent = $this.parent();
                var obj = parent.find('.objEditable');

                if(obj.data('name') == 'moneyBet') {
                    obj.show();
                    parent.find('a').hide();
                }

                obj.trigger('edit_report');
            });

            jQ('.objEditable').editable(base_url + 'report/editReport', {
                event: 'edit_report',
                type: 'text',
                submit: 'OK',
                indicator: 'Wait...',
                id: 'hk',
                name: 'ns',
                css: 'inherit',
                onblur: "cancel",
                cssclass: "editable",
                submitdata: function (value, settings) {
                    var betItem = jQ(this).parents('.betItem');

                    return {
                        'name': jQ(this).data('name'),
                        'id': betItem.data('id')
                    };
                },
                "onsubmit": function (settings, td) {

                    var input = jQ(td).find('input');
                    var original = input.val();
                    if (original == "") {
                        alert("Gía trị này không được để trống!");
                        return false;
                    } else {
                        return true;
                    }
                },
                callback: function (value, settings) {
                    if (value == 'error') {
                        alert('An error has occurred!');
                        location.reload();
                    }
                    //Check update cols
                    var $this = jQ(this);
                    if($this.data('update')) {

                        var target = $this.data('target-update');
                        var allValues = jQ('.' + target);
                        var totalPlc = jQ('.' + target + 'Total');
                        var value = 0;

                        allValues.each(function() {

                            value += Math.floor(parseFloat(jQ(this).text()));
                        });

                        totalPlc.html(value);
                    }

                    if(jQ(this).data('name') == 'moneyBet') {

                        var parent = jQ(this).parents();
                        jQ(this).hide();
                        parent.find('a').show();
                    }

                    alert('Cập nhật thành công!');
                },
                "onreset": function (settings, obj) {

                    if(jQ(obj).data('name') == 'moneyBet') {

                        var parent = jQ(obj).parents();
                        jQ(obj).hide();
                        parent.find('a').show();
                    }
                }
            });
        };
    };
    
})($$.app, $);